from django.db import models
# from datetime import datetime # 原来用的注释掉
from django.utils import timezone as datetime # 不想大面积修改就这么做


# Create your models here.

# 账号信息模型
class User(models.Model):
    username = models.CharField(max_length=50)  # 账号
    nickname = models.CharField(max_length=50)  # 昵称
    password_hash = models.CharField(max_length=100)  # 密码
    password_salt = models.CharField(max_length=50)  # 密码干扰值
    status = models.IntegerField(default=1)  # 状态:0删除/1普通/2管理员/3集群管理员/4超级管理员
    create_at = models.DateTimeField(default=datetime.now)  # 创建时间
    update_at = models.DateTimeField(default=datetime.now)  # 修改时间

    # 转化为字典格式
    def toDict(self):
        return {'id': self.id, 'username': self.username, 'nickname': self.nickname,
                'status': self.status,
                'create_at': self.create_at.strftime('%Y-%m-%d %H:%M:%S'),
                'update_at': self.update_at.strftime('%Y-%m-%d %H:%M:%S')}

    class Meta:
        db_table = "user"  # 更改表名


# 主机信息模型
class Hosts(models.Model):
    ip = models.CharField(max_length=50)  # ip地址
    name = models.CharField(max_length=50)  # 名字
    status = models.IntegerField(default=1)  # 在线状态 0已删除 1在线 2不在线
    cpu = models.IntegerField(default=0)  # cpu使用情况
    ram = models.IntegerField(default=0)  # 内存使用情况
    create_at = models.DateTimeField(default=datetime.now)  # 创建时间
    update_at = models.DateTimeField(default=datetime.now)  # 修改时间

    def toDict(self):
        return {'id': self.id, 'ip': self.ip, 'name': self.name, 'status': self.status, 'cpu': self.cpu,
                'ram': self.ram,
                'create_at': self.create_at.strftime('%Y-%m-%d %H:%M:%S'),
                'update_at': self.update_at.strftime('%Y-%m-%d %H:%M:%S')
                }

    class Meta:
        db_table = "hosts"  # 更改表名


# 集群信息模型
class Cluster(models.Model):
    name = models.CharField(max_length=50)  # 集群名字
    types = models.IntegerField(default=0)  # 集群类型 1spark 2hadoop
    user_id = models.IntegerField(default=0)  # 所属用户id
    status = models.IntegerField(default=1)  # 集群状态 0已删除 1存在
    create_at = models.DateTimeField(default=datetime.now)  # 创建时间
    update_at = models.DateTimeField(default=datetime.now)  # 修改时间

    def toDict(self):
        return {'id': self.id, 'name': self.name, 'types': self.types, 'user_id': self.user_id, 'status': self.status,
                'create_at': self.create_at.strftime('%Y-%m-%d %H:%M:%S'),
                'update_at': self.update_at.strftime('%Y-%m-%d %H:%M:%S')
                }

    class Meta:
        db_table = "cluster"  # 更改表名


# pod信息模型
class Pod(models.Model):
    name = models.CharField(max_length=50)  # pod 名字
    status = models.IntegerField(default=0)  # 0删除 1 running 2 pending（等待中）3终止
    hosts_ip = models.CharField(max_length=50)  # 所属主机ip地址
    cluster_name = models.CharField(max_length=50)  # 所属集群名字
    cpu = models.CharField(max_length=50)  # cpu使用情况
    ram = models.CharField(max_length=50)  # 内存使用情况

    def toDict(self):
        return {'id': self.id, 'name': self.name, 'status': self.status, 'hosts_ip': self.hosts_ip,
                'cluster_name': self.cluster_name, 'cpu': self.cpu, 'ram': self.ram}

    class Meta:
        db_table = "pod"  # 更改表名
